home *** CD-ROM | disk | FTP | other *** search
- /*
- A simple example of using NList, NListview and NFloattext in AmigaE
- Written by Piotr Pawlow (PP/UNION)
- */
-
- OPT PREPROCESS
-
- MODULE 'utility/tagitem','mui/nlist_mcc','mui/nlistview_mcc',
- 'mui/nfloattext_mcc','muimaster','libraries/mui','amigalib/boopsi',
- 'libraries/asl','workbench/startup','fakestack'
-
- DEF app,wi_Master
-
- PROC main() HANDLE
- DEF signal,opened,filename,rdargs,args:PTR TO LONG
- DEF buf,nlist,filenameobj,retid,nfloattext
- DEF wb:wbstartup,filename2,filename2obj,buf2
- DEF stack
-
- stack:=fakestack()
- IF (wb:=wbmessage) THEN CurrentDir(wb.arglist.lock)
-
- args:=[0,0]
-
- IF (rdargs:=ReadArgs('NLISTFILE=NF,FLOATTEXTFILE=FF',args,0))=0 THEN Raise('Wrong arguments')
-
- IF args[0] THEN filename:=args[0] ELSE filename:='nlist_example.txt'
- IF args[1] THEN filename2:=args[1] ELSE filename2:='nfloattext_example.txt'
-
- IF (muimasterbase:=OpenLibrary(MUIMASTER_NAME,MUIMASTER_VMIN))=NIL THEN
- Raise('failed to open muimaster.library')
-
- app := ApplicationObject,
- MUIA_Application_Title , 'NList Example',
- MUIA_Application_Version , '$VER: NList Exaple 1.0 (14.10.96)',
- MUIA_Application_Author , 'Piotr Pawlow (PP/UNION)',
- MUIA_Application_Description, 'Just a little example...',
- MUIA_Application_Base , 'NL_EXAMPLE',
- SubWindow, wi_Master := WindowObject,
- MUIA_Window_ID, "MAIN",
- MUIA_Window_Title, 'NList Example',
- MUIA_Window_ActiveObject,nlist,
- MUIA_Window_Height,MUIV_Window_Height_Visible(80),
- MUIA_Window_Width,MUIV_Window_Width_Visible(80),
- WindowContents, RegisterGroup(['NList','NFloattext',0]),
- Child, VGroup, GroupFrameT('NList class'),
- Child, nlist:=NListviewObject,
- MUIA_CycleChain,MUI_TRUE,
- MUIA_NListview_NList,NListObject,
- MUIA_NList_DragSortable,MUI_TRUE,
- MUIA_NList_ShowDropMarks,MUI_TRUE,
- MUIA_NList_MultiSelect,MUIV_NList_MultiSelect_Default,
- End,
- End,
- Child, HGroup,
- Child, KeyLabel2('File:',"F"),
- Child, PopaslObject,
- MUIA_Popstring_String, filenameobj:=StringObject,
- MUIA_CycleChain,MUI_TRUE,
- MUIA_String_MaxLen,138,
- StringFrame,
- MUIA_ControlChar,"f",
- End,
- MUIA_Popstring_Button, PopButton(MUII_PopFile),
- ASLFR_TITLETEXT, 'Please select a file...',
- ASLFR_REJECTICONS,TRUE,
- End,
- End,
- End,
- Child, VGroup, GroupFrameT('NFloattext class'),
- Child, NListviewObject,
- MUIA_CycleChain,MUI_TRUE,
- MUIA_NListview_Horiz_ScrollBar,MUIV_NListview_HSB_None,
- MUIA_NListview_NList,nfloattext:=NFloattextObject,
- MUIA_Floattext_Justify,MUI_TRUE,
- End,
- End,
- Child, HGroup,
- Child, KeyLabel2('File:',"F"),
- Child, PopaslObject,
- MUIA_Popstring_String, filename2obj:=StringObject,
- MUIA_CycleChain,MUI_TRUE,
- MUIA_String_MaxLen,138,
- StringFrame,
- MUIA_ControlChar,"f",
- End,
- MUIA_Popstring_Button, PopButton(MUII_PopFile),
- ASLFR_TITLETEXT, 'Please select a file...',
- ASLFR_REJECTICONS,TRUE,
- End,
- End,
- End,
- End,
- End,
- End
-
- IF app=NIL THEN Raise('Failed to create application.')
-
- doMethodA(wi_Master,[MUIM_Notify,MUIA_Window_CloseRequest,MUI_TRUE,app,2,MUIM_Application_ReturnID,MUIV_Application_ReturnID_Quit])
- doMethodA(filenameobj,[MUIM_Notify,MUIA_String_Acknowledge,MUIV_EveryTime,app,2,MUIM_Application_ReturnID,"LOAD"])
- doMethodA(filename2obj,[MUIM_Notify,MUIA_String_Acknowledge,MUIV_EveryTime,app,2,MUIM_Application_ReturnID,"LOD2"])
-
- set(wi_Master,MUIA_Window_Open,MUI_TRUE)
- get(wi_Master,MUIA_Window_Open,{opened})
- IF opened=FALSE THEN Raise('Failed to open window.')
-
- buf2:=loadcontents(filename2)
- set(filename2obj,MUIA_String_Contents,filename2)
- IF buf2 THEN set(nfloattext,MUIA_NFloattext_Text,buf2)
- buf:=loadcontents(filename)
- set(filenameobj,MUIA_String_Contents,filename)
- IF buf THEN doMethodA(nlist,[MUIM_NList_Insert,buf,-2,MUIV_NList_Insert_Top])
-
- REPEAT
- retid:=doMethodA(app,[MUIM_Application_NewInput,{signal}])
- IF retid="LOAD" THEN buf:=loadnew(buf,nlist,filenameobj)
- IF retid="LOD2" THEN buf2:=loadnew2(buf2,nfloattext,filename2obj)
- IF (signal) THEN Wait(signal)
- UNTIL retid=MUIV_Application_ReturnID_Quit
-
- set(wi_Master,MUIA_Window_Open,FALSE)
-
- EXCEPT DO
- IF rdargs THEN FreeArgs(rdargs)
- IF app THEN Mui_DisposeObject(app)
- IF muimasterbase THEN CloseLibrary(muimasterbase)
- IF exception THEN WriteF('\s\n',exception)
- fakestack(stack)
- ENDPROC
-
- PROC loadcontents(filename)
- DEF len,handle,buf:PTR TO CHAR
- len:=FileLength(filename)
- IF handle:=Open(filename,OLDFILE)
- IF (buf:=New(len+1))=0
- info('Not enough memory')
- RETURN 0
- ENDIF
- IF (Read(handle,buf,len)=-1) OR (len<1)
- Close(handle)
- info('Failed to read file %s',[filename])
- RETURN 0
- ENDIF
- Close(handle)
- ELSE
- info('Failed to open file %s',[filename])
- RETURN 0
- ENDIF
- ENDPROC buf
-
- PROC info(text,args=0) IS Mui_RequestA(app,wi_Master,0,0,'*_OK',text,args)
-
- PROC loadnew(buf,nlist,stringobject)
- DEF name
- Dispose(buf)
- doMethodA(nlist,[MUIM_NList_Clear,0])
- get(stringobject,MUIA_String_Contents,{name})
- buf:=loadcontents(name)
- IF buf THEN doMethodA(nlist,[MUIM_NList_Insert,buf,-2,MUIV_NList_Insert_Top])
- ENDPROC buf
-
- PROC loadnew2(buf,nfloattext,stringobject)
- DEF name
- Dispose(buf)
- get(stringobject,MUIA_String_Contents,{name})
- buf:=loadcontents(name)
- set(nfloattext,MUIA_Floattext_Text,buf)
- ENDPROC buf
-